"DOUBLE"=>"gdouble", "STRING"=>"gpointer",
"ENUM"=>"gint", "FLAGS"=>"gint",
"BOXED"=>"gpointer", "FOREIGN"=>"gpointer",
- "C_CALLBACK"=>"C_CALLBACK", "POINTER"=>"gpointer",
- "ARGS"=>"gpointer", "SIGNAL"=>"gpointer",
+ "POINTER"=>"gpointer",
"OBJECT"=>"gpointer",
- "STYLE"=>"gpointer", "GDK_EVENT"=>"gpointer");
+
+# complex types. These need special handling.
+ "FOREIGN"=>"FOREIGN",
+ "C_CALLBACK"=>"C_CALLBACK",
+ "SIGNAL"=>"SIGNAL",
+ "ARGS"=>"ARGS",
+ "CALLBACK"=>"CALLBACK"
+ );
$srcdir = $ENV{'srcdir'} || '.';
for (@params) {
if($_ eq "C_CALLBACK") {
print OS "gpointer arg".$argn."a,\n";
- print OS "gpointer arg".$argn++."b,\n";
+ print OS "gpointer arg".$argn."b,\n";
+ $argn++;
+ } elsif($_ eq "SIGNAL") {
+ print OS "gpointer arg".$argn."a,\n";
+ print OS "gpointer arg".$argn."b,\n";
+ $argn++;
+ } elsif($_ eq "ARGS") {
+ print OS "gpointer arg".$argn."a,\n";
+ print OS "gpointer arg".$argn."b,\n";
+ $argn++;
+ } elsif($_ eq "CALLBACK") {
+ print OS "gpointer arg".$argn."a,\n";
+ print OS "gpointer arg".$argn."b,\n";
+ print OS "gpointer arg".$argn."c,\n";
+ $argn++;
+ } elsif($_ eq "FOREIGN") {
+ print OS "gpointer arg".$argn."a,\n";
+ print OS "gpointer arg".$argn."b,\n";
+ $argn++;
} else {
print OS "$trans{$_} arg".$argn++.",\n" unless $_ eq "NONE";
}
if($retval ne "NONE") {
print OS " $trans{$retval} *return_val;\n";
- print OS " return_val = GTK_RETLOC_$retval (args[".(scalar @params)."]);\n";
+ $retn = 0;
+ $retn = scalar @params unless $params[0] eq "NONE";
+ print OS " return_val = GTK_RETLOC_$retval (args[$retn]);\n";
}
print OS " rfunc = (GtkSignal_$funcname) func;\n";
print OS " *return_val = " unless $retval eq "NONE";
print OS <<EOT;
GTK_VALUE_C_CALLBACK(args[$i]).func,
GTK_VALUE_C_CALLBACK(args[$i]).func_data,
+EOT
+ } elsif ($params[$i] eq "SIGNAL") {
+ print OS <<EOT;
+GTK_VALUE_SIGNAL(args[$i]).f,
+GTK_VALUE_SIGNAL(args[$i]).d,
+EOT
+ } elsif ($params[$i] eq "CALLBACK") {
+ print OS <<EOT;
+GTK_VALUE_CALLBACK(args[$i]).marshal,
+GTK_VALUE_CALLBACK(args[$i]).data,
+GTK_VALUE_CALLBACK(args[$i]).notify,
+EOT
+ } elsif ($params[$i] eq "FOREIGN") {
+ print OS <<EOT;
+GTK_VALUE_FOREIGN(args[$i]).data,
+GTK_VALUE_FOREIGN(args[$i]).notify,
EOT
} elsif ($params[$i] eq "NONE") {
} else {
GTK_RUN_FIRST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, style_set),
- gtk_marshal_NONE__STYLE,
+ gtk_marshal_NONE__POINTER,
GTK_TYPE_NONE, 1,
GTK_TYPE_STYLE);
widget_signals[ADD_ACCELERATOR] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[BUTTON_PRESS_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, button_press_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[BUTTON_RELEASE_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, button_release_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[MOTION_NOTIFY_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, motion_notify_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[DELETE_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, delete_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[DESTROY_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, destroy_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[EXPOSE_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, expose_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[KEY_PRESS_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, key_press_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[KEY_RELEASE_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, key_release_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[ENTER_NOTIFY_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, enter_notify_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[LEAVE_NOTIFY_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, leave_notify_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[CONFIGURE_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, configure_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[FOCUS_IN_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, focus_in_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[FOCUS_OUT_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, focus_out_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[MAP_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, map_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[UNMAP_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, unmap_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[PROPERTY_NOTIFY_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, property_notify_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[SELECTION_CLEAR_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, selection_clear_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[SELECTION_REQUEST_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, selection_request_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[SELECTION_NOTIFY_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, selection_notify_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[SELECTION_RECEIVED] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, proximity_in_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[PROXIMITY_OUT_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, proximity_out_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[DRAG_BEGIN_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, drag_begin_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[DRAG_REQUEST_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, drag_request_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[DRAG_END_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, drag_end_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[DROP_ENTER_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, drop_enter_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[DROP_LEAVE_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, drop_leave_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[DROP_DATA_AVAILABLE_EVENT] =
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass,
drop_data_available_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[VISIBILITY_NOTIFY_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, visibility_notify_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[CLIENT_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, client_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[NO_EXPOSE_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, no_expose_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[OTHER_EVENT] =
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkWidgetClass, other_event),
- gtk_marshal_BOOL__GDK_EVENT,
+ gtk_marshal_BOOL__POINTER,
GTK_TYPE_BOOL, 1,
GTK_TYPE_GDK_EVENT);
widget_signals[DEBUG_MSG] =